Create a new analysis directories.
- general directory
- stains directory
- for plots
- for output of summary results
- for baseline tables
- for genetic analyses
- for Cox regression results
* General packages...
Update all/some/none? [a/s/n]:
For the ERA-CVD ‘druggable-MI-targets’ project (grantnumber: 01KL1802) we performed two related RNA sequencing (RNAseq) experiments:
conventional (‘bulk’) RNAseq using RNA extracted from carotid plaque samples, n ± 700. As of Thursday, October 17, 2024 all samples have been selected and RNA has been extracted; quality control (QC) was performed and we have a dataset of 635 samples.
single-cell RNAseq (scRNAseq) of at least n = 40 samples (20 females, 20 males). As of Thursday, October 17, 2024 data is available of 40 samples (3 females, 15 males), we are extending sampling to get more female samples.
Plaque samples are derived from carotid endarterectomies as part of the Athero-Express Biobank Study which is an ongoing study in the UMC Utrecht.
Here we map the CONVOCALS_downstream to single-cells from the plaques.
Here we obtain data from the CONVOCALS_downstream in plaques.
library(openxlsx)
gene_list_df <- read.xlsx(paste0(PROJECT_loc, "/targets/targets.xlsx"), sheet = "Genes")
gene_list <- unlist(gene_list_df$Gene)
gene_list [1] "SCGB3A2" "LIX1" "IGSF9B" "ND6" "ALB" "OR10A4" "RASEF"
[8] "NEDD4" "TRIM49D1" "TCL1A" "ND4L" "ATP8" "FBXO15" "F5"
[15] "TMEM212" "PTPRD" "CYP46A1" "OR2T33" "SORBS2" "ITGA7" "RNASE1"
[22] "FOS" "HMOX1" "LAPTM5" "MMP9" "SIGLEC1" "FTL" "CD14"
[29] "HCST" "TIMP3" "CCL2" "SAT1" "CD163" "PTGDS" "LGALS9"
[36] "ACKR1" "NT5DC2" "TGFBI" "C1QC" "S100A9"
First we will load the data:
Here we load the latest dataset from our Athero-Express single-cell RNA experiment.
# load(paste0(AESCRNA_loc, "/20210811.46.patients.KP.RData"))
# scRNAseqData <- seuset
# rm(seuset)
#
# saveRDS(scRNAseqData, paste0(AESCRNA_loc, "/20210811.46.patients.KP.RDS"))
scRNAseqData <- readRDS(paste0(AESCRNA_loc, "/20210811.46.patients.KP.RDS"))
scRNAseqDataAn object of class Seurat
36147 features across 4948 samples within 2 assays
Active assay: RNA (20111 features, 0 variable features)
3 layers present: counts, data, scale.data
1 other assay present: SCT
2 dimensional reductions calculated: pca, umap
The naming/classification is based on a combination conventional markers. We do not claim to know the exact identity of each cell, rather we refer to cells as ‘KIT+ Mast cells”-like cells. Likewise we refer to the cell clusters as ’communities’ of cells that exhibit similar properties, i.e. similar defining markers (e.g. KIT).
We will rename the cell types to human readable names.
### change names for clarity
backup.scRNAseqData = scRNAseqData
# get the old names to change to new names
UMAPPlot(scRNAseqData, label = FALSE, pt.size = 1.25, label.size = 4, group.by = "ident") [1] CD3+ T Cells I
[2] CD3+ T Cells IV
[3] CD34+ Endothelial Cells I
[4] CD3+ T Cells V
[5] CD3+CD56+ NK Cells II
[6] CD3+ T Cells VI
[7] CD68+IL18+TLR4+TREM2+ Resident macrophages
[8] CD3+CD56+ NK Cells I
[9] ACTA2+ Smooth Muscle Cells
[10] CD3+ T Cells II
[11] FOXP3+ T Cells
[12] CD34+ Endothelial Cells II
[13] CD3+ T Cells III
[14] CD68+CD1C+ Dendritic Cells
[15] CD68+CASP1+IL1B+SELL+ Inflammatory macrophages
[16] CD79A+ Class-switched Memory B Cells
[17] CD68+ABCA1+OLR1+TREM2+ Foam Cells
[18] CD68+KIT+ Mast Cells
[19] CD68+CD4+ Monocytes
[20] CD79+ Plasma B Cells
20 Levels: CD3+ T Cells I CD3+ T Cells II CD3+ T Cells III ... CD79+ Plasma B Cells
celltypes <- c("CD68+CD4+ Monocytes" = "CD68+CD4+ Mono",
"CD68+IL18+TLR4+TREM2+ Resident macrophages" = "CD68+IL18+TLR4+TREM2+ MRes",
"CD68+CD1C+ Dendritic Cells" = "CD68+CD1C+ DC",
"CD68+CASP1+IL1B+SELL+ Inflammatory macrophages" = "CD68+CASP1+IL1B+SELL MInf",
"CD68+ABCA1+OLR1+TREM2+ Foam Cells" = "CD68+ABCA1+OLR1+TREM2+ FC",
# T-cells
"CD3+ T Cells I" = "CD3+ TC I",
"CD3+ T Cells II" = "CD3+ TC II",
"CD3+ T Cells III" = "CD3+ TC III",
"CD3+ T Cells IV" = "CD3+ TC IV",
"CD3+ T Cells V" = "CD3+ TC V",
"CD3+ T Cells VI" = "CD3+ TC VI",
"FOXP3+ T Cells" = "FOXP3+ TC",
# Endothelial cells
"CD34+ Endothelial Cells I" = "CD34+ EC I",
"CD34+ Endothelial Cells II" = "CD34+ EC II",
# SMC
"ACTA2+ Smooth Muscle Cells" = "ACTA2+ SMC",
# NK Cells
"CD3+CD56+ NK Cells I" = "CD3+CD56+ NK I",
"CD3+CD56+ NK Cells II" = "CD3+CD56+ NK II",
# Mast
"CD68+KIT+ Mast Cells" = "CD68+KIT+ MC",
"CD79A+ Class-switched Memory B Cells" = "CD79A+ BCmem",
"CD79+ Plasma B Cells" = "CD79+ BCplasma")
scRNAseqData <- Seurat::RenameIdents(object = scRNAseqData,
celltypes)UMAPPlot(scRNAseqData, label = TRUE, pt.size = 1.25, label.size = 4, group.by = "ident",
repel = TRUE)Loading the Athero-Express clinical data.
AEDB.CEA <- readRDS(file = paste0(OUT_loc, "/", Today,".",PROJECTNAME,".AEDB.CEA.RDS"))
# AEDB.CEA <- readRDS(file = paste0(OUT_loc, "/20240531.",PROJECTNAME,".AEDB.CEA.RDS"))# Baseline table variables
basetable_vars = c("Hospital", "ORyear", "Artery_summary",
"Age", "Gender",
# "TC_finalCU", "LDL_finalCU", "HDL_finalCU", "TG_finalCU",
"TC_final", "LDL_final", "HDL_final", "TG_final",
# "hsCRP_plasma",
"systolic", "diastoli", "GFR_MDRD", "BMI",
"KDOQI", "BMI_WHO",
"SmokerStatus", "AlcoholUse",
"DiabetesStatus",
"Hypertension.selfreport", "Hypertension.selfreportdrug", "Hypertension.composite", "Hypertension.drugs",
"Med.anticoagulants", "Med.all.antiplatelet", "Med.Statin.LLD",
"Stroke_Dx", "sympt", "Symptoms.5G", "AsymptSympt", "AsymptSympt2G",
"Symptoms.Update2G", "Symptoms.Update3G", "indexsymptoms_latest_4g",
"restenos", "stenose",
"CAD_history", "PAOD", "Peripheral.interv",
"EP_composite", "EP_composite_time", "EP_major", "EP_major_time",
"MAC_rankNorm", "SMC_rankNorm", "Macrophages.bin", "SMC.bin",
"Neutrophils_rankNorm", "MastCells_rankNorm",
"IPH.bin", "VesselDensity_rankNorm",
"Calc.bin", "Collagen.bin",
"Fat.bin_10", "Fat.bin_40", "OverallPlaquePhenotype", "Plaque_Vulnerability_Index",
"PCSK9_plasma", "PCSK9_plasma_rankNorm")
basetable_bin = c("Gender", "Artery_summary",
"KDOQI", "BMI_WHO",
"SmokerStatus", "AlcoholUse",
"DiabetesStatus",
"Hypertension.selfreport", "Hypertension.selfreportdrug", "Hypertension.composite", "Hypertension.drugs",
"Med.anticoagulants", "Med.all.antiplatelet", "Med.Statin.LLD",
"Stroke_Dx", "sympt", "Symptoms.5G", "AsymptSympt", "AsymptSympt2G",
"Symptoms.Update2G", "Symptoms.Update3G", "indexsymptoms_latest_4g",
"restenos", "stenose",
"CAD_history", "PAOD", "Peripheral.interv",
"EP_major", "EP_composite", "Macrophages.bin", "SMC.bin",
"IPH.bin",
"Calc.bin", "Collagen.bin",
"Fat.bin_10", "Fat.bin_40", "OverallPlaquePhenotype", "Plaque_Vulnerability_Index")
# basetable_bin
basetable_con = basetable_vars[!basetable_vars %in% basetable_bin]
# basetable_conmetadata <- scRNAseqData@meta.data %>% as_tibble() %>% separate(orig.ident, c("Patient", NA))
scRNAseqDataMeta <- metadata %>% distinct(Patient, .keep_all = TRUE)distinct: removed 4,902 rows (99%), 46 rows remaining
scRNAseqDataMetaAE <- merge(scRNAseqDataMeta, AEDB.CEA, by.x = "Patient", by.y = "STUDY_NUMBER", sort = FALSE, all.x = TRUE)
dim(scRNAseqDataMetaAE)[1] 46 1231
# Replace missing data
# Ref: https://cran.r-project.org/web/packages/naniar/vignettes/replace-with-na.html
require(naniar)
na_strings <- c("NA", "N A", "N / A", "N/A", "N/ A",
"Not Available", "Not available",
"missing",
"-999", "-99",
"No data available/missing", "No data available/Missing")
# Then you write ~.x %in% na_strings - which reads as “does this value occur in the list of NA strings”.
scRNAseqDataMetaAE %>%
replace_with_na_all(condition = ~.x %in% na_strings)cat("====================================================================================================")====================================================================================================
SELECTION THE SHIZZLE
- sanity checking PRIOR to selection
library(data.table)
require(labelled)
ae.gender <- to_factor(scRNAseqDataMetaAE$Gender)
ae.hospital <- to_factor(scRNAseqDataMetaAE$Hospital)
table(ae.gender, ae.hospital, dnn = c("Sex", "Hospital"), useNA = "ifany") Hospital
Sex St. Antonius, Nieuwegein UMC Utrecht <NA>
female 0 18 0
male 0 26 0
<NA> 0 0 2
ae.artery <- to_factor(scRNAseqDataMetaAE$Artery_summary)
table(ae.artery, ae.gender, dnn = c("Sex", "Artery"), useNA = "ifany") Artery
Sex female
No artery known (yet), no surgery (patient ill, died, exited study), re-numbered to AAA 0
carotid (left & right) 18
femoral/iliac (left, right or both sides) 0
other carotid arteries (common, external) 0
carotid bypass and injury (left, right or both sides) 0
aneurysmata (carotid & femoral) 0
aorta 0
other arteries (renal, popliteal, vertebral) 0
femoral bypass, angioseal and injury (left, right or both sides) 0
<NA> 0
Artery
Sex male
No artery known (yet), no surgery (patient ill, died, exited study), re-numbered to AAA 0
carotid (left & right) 25
femoral/iliac (left, right or both sides) 0
other carotid arteries (common, external) 1
carotid bypass and injury (left, right or both sides) 0
aneurysmata (carotid & femoral) 0
aorta 0
other arteries (renal, popliteal, vertebral) 0
femoral bypass, angioseal and injury (left, right or both sides) 0
<NA> 0
Artery
Sex <NA>
No artery known (yet), no surgery (patient ill, died, exited study), re-numbered to AAA 0
carotid (left & right) 0
femoral/iliac (left, right or both sides) 0
other carotid arteries (common, external) 0
carotid bypass and injury (left, right or both sides) 0
aneurysmata (carotid & femoral) 0
aorta 0
other arteries (renal, popliteal, vertebral) 0
femoral bypass, angioseal and injury (left, right or both sides) 0
<NA> 2
ae.gender
ae.ic female
missing 0
no, died 0
yes 9
yes, health treatment when possible 5
yes, no health treatment 2
yes, no health treatment, no commercial business 1
yes, no tissue, no commerical business 0
yes, no tissue, no questionnaires, no medical info, no commercial business 0
yes, no questionnaires, no health treatment, no commercial business 0
yes, no questionnaires, health treatment when possible 0
yes, no tissue, no questionnaires, no health treatment, no commerical business 0
yes, no health treatment, no medical info, no commercial business 0
yes, no tissue, no questionnaires, no health treatment, no medical info, no commercial business 0
yes, no questionnaires, no health treatment 0
yes, no tissue, no health treatment 0
yes, no tissue, no questionnaires 0
yes, no tissue, health treatment when possible 0
yes, no tissue 0
yes, no commerical business 1
yes, health treatment when possible, no commercial business 0
yes, no medical info, no commercial business 0
yes, no questionnaires 0
yes, no tissue, no questionnaires, no health treatment, no medical info 0
yes, no tissue, no questionnaires, no health treatment, no commercial business 0
yes, no medical info 0
yes, no questionnaires, no commercial business 0
yes, no questionnaires, no health treatment, no medical info 0
yes, no questionnaires, health treatment when possible, no commercial business 0
yes, no health treatment, no medical info 0
no, doesn't want to 0
no, unable to sign 0
no, no reaction 0
no, lost 0
no, too old 0
yes, no medical info, health treatment when possible 0
no (never asked for IC because there was no tissue) 0
yes, no medical info, no commercial business, health treatment when possible 0
no, endpoint 0
wil niets invullen, wel alles gebruiken 0
second informed concents: yes, no commercial business 0
nooit geincludeerd 0
yes, not outside EU 0
yes, no DNA 0
<NA> 0
ae.gender
ae.ic male
missing 0
no, died 0
yes 14
yes, health treatment when possible 7
yes, no health treatment 2
yes, no health treatment, no commercial business 2
yes, no tissue, no commerical business 0
yes, no tissue, no questionnaires, no medical info, no commercial business 0
yes, no questionnaires, no health treatment, no commercial business 0
yes, no questionnaires, health treatment when possible 0
yes, no tissue, no questionnaires, no health treatment, no commerical business 0
yes, no health treatment, no medical info, no commercial business 0
yes, no tissue, no questionnaires, no health treatment, no medical info, no commercial business 0
yes, no questionnaires, no health treatment 0
yes, no tissue, no health treatment 0
yes, no tissue, no questionnaires 0
yes, no tissue, health treatment when possible 0
yes, no tissue 0
yes, no commerical business 1
yes, health treatment when possible, no commercial business 0
yes, no medical info, no commercial business 0
yes, no questionnaires 0
yes, no tissue, no questionnaires, no health treatment, no medical info 0
yes, no tissue, no questionnaires, no health treatment, no commercial business 0
yes, no medical info 0
yes, no questionnaires, no commercial business 0
yes, no questionnaires, no health treatment, no medical info 0
yes, no questionnaires, health treatment when possible, no commercial business 0
yes, no health treatment, no medical info 0
no, doesn't want to 0
no, unable to sign 0
no, no reaction 0
no, lost 0
no, too old 0
yes, no medical info, health treatment when possible 0
no (never asked for IC because there was no tissue) 0
yes, no medical info, no commercial business, health treatment when possible 0
no, endpoint 0
wil niets invullen, wel alles gebruiken 0
second informed concents: yes, no commercial business 0
nooit geincludeerd 0
yes, not outside EU 0
yes, no DNA 0
<NA> 0
ae.gender
ae.ic <NA>
missing 0
no, died 0
yes 0
yes, health treatment when possible 0
yes, no health treatment 0
yes, no health treatment, no commercial business 0
yes, no tissue, no commerical business 0
yes, no tissue, no questionnaires, no medical info, no commercial business 0
yes, no questionnaires, no health treatment, no commercial business 0
yes, no questionnaires, health treatment when possible 0
yes, no tissue, no questionnaires, no health treatment, no commerical business 0
yes, no health treatment, no medical info, no commercial business 0
yes, no tissue, no questionnaires, no health treatment, no medical info, no commercial business 0
yes, no questionnaires, no health treatment 0
yes, no tissue, no health treatment 0
yes, no tissue, no questionnaires 0
yes, no tissue, health treatment when possible 0
yes, no tissue 0
yes, no commerical business 0
yes, health treatment when possible, no commercial business 0
yes, no medical info, no commercial business 0
yes, no questionnaires 0
yes, no tissue, no questionnaires, no health treatment, no medical info 0
yes, no tissue, no questionnaires, no health treatment, no commercial business 0
yes, no medical info 0
yes, no questionnaires, no commercial business 0
yes, no questionnaires, no health treatment, no medical info 0
yes, no questionnaires, health treatment when possible, no commercial business 0
yes, no health treatment, no medical info 0
no, doesn't want to 0
no, unable to sign 0
no, no reaction 0
no, lost 0
no, too old 0
yes, no medical info, health treatment when possible 0
no (never asked for IC because there was no tissue) 0
yes, no medical info, no commercial business, health treatment when possible 0
no, endpoint 0
wil niets invullen, wel alles gebruiken 0
second informed concents: yes, no commercial business 0
nooit geincludeerd 0
yes, not outside EU 0
yes, no DNA 0
<NA> 2
rm(ae.gender, ae.hospital, ae.artery, ae.ic)
scRNAseqDataMetaAE.all <- subset(scRNAseqDataMetaAE,
(Artery_summary == "carotid (left & right)" | Artery_summary == "other carotid arteries (common, external)" ) & # we only want carotids
informedconsent != "missing" & # we are really strict in selecting based on 'informed consent'!
informedconsent != "no, died" &
informedconsent != "yes, no tissue, no commerical business" &
informedconsent != "yes, no tissue, no questionnaires, no medical info, no commercial business" &
informedconsent != "yes, no tissue, no questionnaires, no health treatment, no commerical business" &
informedconsent != "yes, no tissue, no questionnaires, no health treatment, no medical info, no commercial business" &
informedconsent != "yes, no tissue, no health treatment" &
informedconsent != "yes, no tissue, no questionnaires" &
informedconsent != "yes, no tissue, health treatment when possible" &
informedconsent != "yes, no tissue" &
informedconsent != "yes, no tissue, no questionnaires, no health treatment, no medical info" &
informedconsent != "yes, no tissue, no questionnaires, no health treatment, no commercial business" &
informedconsent != "no, doesn't want to" &
informedconsent != "no, unable to sign" &
informedconsent != "no, no reaction" &
informedconsent != "no, lost" &
informedconsent != "no, too old" &
informedconsent != "yes, no medical info, health treatment when possible" &
informedconsent != "no (never asked for IC because there was no tissue)" &
informedconsent != "no, endpoint" &
informedconsent != "nooit geincludeerd" &
informedconsent != "yes, no health treatment, no commercial business" & # IMPORTANT: since we are sharing with a commercial party
informedconsent != "yes, no tissue, no commerical business" &
informedconsent != "yes, no tissue, no questionnaires, no medical info, no commercial business" &
informedconsent != "yes, no questionnaires, no health treatment, no commercial business" &
informedconsent != "yes, no tissue, no questionnaires, no health treatment, no commerical business" &
informedconsent != "yes, no health treatment, no medical info, no commercial business" &
informedconsent != "yes, no tissue, no questionnaires, no health treatment, no medical info, no commercial business" &
informedconsent != "yes, no commerical business" &
informedconsent != "yes, health treatment when possible, no commercial business" &
informedconsent != "yes, no medical info, no commercial business" &
informedconsent != "yes, no tissue, no questionnaires, no health treatment, no commercial business" &
informedconsent != "yes, no questionnaires, no commercial business" &
informedconsent != "yes, no questionnaires, health treatment when possible, no commercial business" &
informedconsent != "second informed concents: yes, no commercial business")
# scRNAseqDataMetaAE.all[1:10, 1:10]
dim(scRNAseqDataMetaAE.all)[1] 39 1231
Showing the baseline table for the scRNAseq data in 39 CEA patients with informed consent.
===========================================================================================
CREATE BASELINE TABLE
# Create baseline tables
# http://rstudio-pubs-static.s3.amazonaws.com/13321_da314633db924dc78986a850813a50d5.html
scRNAseqDataMetaAE.all.tableOne = print(CreateTableOne(vars = basetable_vars,
# factorVars = basetable_bin,
# strata = "Gender",
data = scRNAseqDataMetaAE.all, includeNA = TRUE),
nonnormal = c(),
quote = FALSE, showAllLevels = TRUE,
format = "p",
contDigits = 3)[,1:2]Warning: These variables only have NA/NaN: MAC_rankNorm SMC_rankNorm Neutrophils_rankNorm MastCells_rankNorm IPH.bin VesselDensity_rankNorm PCSK9_plasma PCSK9_plasma_rankNorm Dropped
level
n
Hospital (%) St. Antonius, Nieuwegein
UMC Utrecht
ORyear (%) No data available/missing
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
Artery_summary (%) No artery known (yet), no surgery (patient ill, died, exited study), re-numbered to AAA
carotid (left & right)
femoral/iliac (left, right or both sides)
other carotid arteries (common, external)
carotid bypass and injury (left, right or both sides)
aneurysmata (carotid & femoral)
aorta
other arteries (renal, popliteal, vertebral)
femoral bypass, angioseal and injury (left, right or both sides)
Age (mean (SD))
Gender (%) female
male
TC_final (mean (SD))
LDL_final (mean (SD))
HDL_final (mean (SD))
TG_final (mean (SD))
systolic (mean (SD))
diastoli (mean (SD))
GFR_MDRD (mean (SD))
BMI (mean (SD))
KDOQI (%) No data available/missing
Normal kidney function
CKD 2 (Mild)
CKD 3 (Moderate)
CKD 4 (Severe)
CKD 5 (Failure)
<NA>
BMI_WHO (%) No data available/missing
Underweight
Normal
Overweight
Obese
<NA>
SmokerStatus (%) Current smoker
Ex-smoker
Never smoked
<NA>
AlcoholUse (%) No
Yes
<NA>
DiabetesStatus (%) Control (no Diabetes Dx/Med)
Diabetes
Hypertension.selfreport (%) No data available/missing
no
yes
<NA>
Hypertension.selfreportdrug (%) No data available/missing
no
yes
<NA>
Hypertension.composite (%) No data available/missing
no
yes
Hypertension.drugs (%) No data available/missing
no
yes
<NA>
Med.anticoagulants (%) No data available/missing
no
yes
<NA>
Med.all.antiplatelet (%) No data available/missing
no
yes
<NA>
Med.Statin.LLD (%) No data available/missing
no
yes
<NA>
Stroke_Dx (%) Missing
No stroke diagnosed
Stroke diagnosed
sympt (%) missing
Asymptomatic
TIA
minor stroke
Major stroke
Amaurosis fugax
Four vessel disease
Vertebrobasilary TIA
Retinal infarction
Symptomatic, but aspecific symtoms
Contralateral symptomatic occlusion
retinal infarction
armclaudication due to occlusion subclavian artery, CEA needed for bypass
retinal infarction + TIAs
Ocular ischemic syndrome
ischemisch glaucoom
subclavian steal syndrome
TGA
Symptoms.5G (%) Asymptomatic
Ocular
Other
Retinal infarction
Stroke
TIA
AsymptSympt (%) Asymptomatic
Ocular and others
Symptomatic
AsymptSympt2G (%) Asymptomatic
Symptomatic
Symptoms.Update2G (%) Asymptomatic
Symptomatic
Symptoms.Update3G (%) Asymptomatic
Symptomatic
Unclear
indexsymptoms_latest_4g (%) asymp
ocular
TIA
stroke
unclear
restenos (%) missing
de novo
restenosis
stenose bij angioseal na PTCA
stenose (%) missing
0-49%
50-70%
70-90%
90-99%
100% (Occlusion)
NA
50-99%
70-99%
99
CAD_history (%) Missing
No history CAD
History CAD
PAOD (%) missing/no data
no
yes
Peripheral.interv (%) no
yes
EP_composite (%) No data available.
No composite endpoints
Composite endpoints
<NA>
EP_composite_time (mean (SD))
EP_major (%) No data available.
No major events (endpoints)
Major events (endpoints)
<NA>
EP_major_time (mean (SD))
Macrophages.bin (%) no/minor
moderate/heavy
<NA>
SMC.bin (%) no/minor
moderate/heavy
<NA>
Calc.bin (%) no/minor
moderate/heavy
<NA>
Collagen.bin (%) no/minor
moderate/heavy
<NA>
Fat.bin_10 (%) <10%
>10%
<NA>
Fat.bin_40 (%) <40%
>40%
<NA>
OverallPlaquePhenotype (%) atheromatous
fibroatheromatous
fibrous
<NA>
Plaque_Vulnerability_Index (%) 0
1
2
3
4
5
Overall
n 39
Hospital (%) 0.0
100.0
ORyear (%) 0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
51.3
35.9
10.3
2.6
0.0
Artery_summary (%) 0.0
97.4
0.0
2.6
0.0
0.0
0.0
0.0
0.0
Age (mean (SD)) 72.077 (8.183)
Gender (%) 41.0
59.0
TC_final (mean (SD)) 4.533 (1.252)
LDL_final (mean (SD)) 2.676 (1.013)
HDL_final (mean (SD)) 1.135 (0.229)
TG_final (mean (SD)) 1.927 (1.093)
systolic (mean (SD)) 150.842 (27.013)
diastoli (mean (SD)) 79.711 (16.432)
GFR_MDRD (mean (SD)) 79.036 (31.777)
BMI (mean (SD)) 26.332 (3.962)
KDOQI (%) 0.0
28.2
33.3
28.2
0.0
0.0
10.3
BMI_WHO (%) 0.0
2.6
33.3
38.5
17.9
7.7
SmokerStatus (%) 28.2
53.8
12.8
5.1
AlcoholUse (%) 38.5
53.8
7.7
DiabetesStatus (%) 71.8
28.2
Hypertension.selfreport (%) 0.0
7.7
87.2
5.1
Hypertension.selfreportdrug (%) 0.0
7.7
87.2
5.1
Hypertension.composite (%) 0.0
7.7
92.3
Hypertension.drugs (%) 0.0
10.3
84.6
5.1
Med.anticoagulants (%) 0.0
87.2
5.1
7.7
Med.all.antiplatelet (%) 0.0
20.5
74.4
5.1
Med.Statin.LLD (%) 0.0
20.5
74.4
5.1
Stroke_Dx (%) 0.0
56.4
43.6
sympt (%) 0.0
15.4
17.9
25.6
10.3
15.4
0.0
0.0
2.6
2.6
0.0
2.6
0.0
0.0
7.7
0.0
0.0
0.0
Symptoms.5G (%) 15.4
23.1
2.6
5.1
35.9
17.9
AsymptSympt (%) 15.4
30.8
53.8
AsymptSympt2G (%) 15.4
84.6
Symptoms.Update2G (%) 15.4
84.6
Symptoms.Update3G (%) 15.4
84.6
0.0
indexsymptoms_latest_4g (%) 15.4
28.2
20.5
35.9
0.0
restenos (%) 0.0
100.0
0.0
0.0
stenose (%) 0.0
2.6
10.3
46.2
25.6
0.0
0.0
0.0
15.4
0.0
CAD_history (%) 0.0
79.5
20.5
PAOD (%) 0.0
84.6
15.4
Peripheral.interv (%) 76.9
23.1
EP_composite (%) 0.0
82.1
12.8
5.1
EP_composite_time (mean (SD)) 522.597 (3078.209)
EP_major (%) 0.0
87.2
7.7
5.1
EP_major_time (mean (SD)) 522.681 (3078.194)
Macrophages.bin (%) 2.6
0.0
97.4
SMC.bin (%) 0.0
2.6
97.4
Calc.bin (%) 2.6
0.0
97.4
Collagen.bin (%) 0.0
2.6
97.4
Fat.bin_10 (%) 0.0
2.6
97.4
Fat.bin_40 (%) 2.6
0.0
97.4
OverallPlaquePhenotype (%) 0.0
2.6
0.0
97.4
Plaque_Vulnerability_Index (%) 97.4
2.6
0.0
0.0
0.0
0.0
Writing the baseline table to Excel format.
# Write basetable
require(openxlsx)
# write.xlsx(file = paste0(BASELINE_loc, "/",Today,".",PROJECTNAME,".AESCRNA.32pts.after_qc.IC_commercial.BaselineTable.xlsx"),
# format(as.data.frame(scRNAseqDataMetaAE.all.tableOne), digits = 5, scientific = FALSE),
# rowNames = TRUE, colNames = TRUE,
# sheetName = "AESCRNA", overwrite = TRUE)
write.xlsx(file = paste0(BASELINE_loc, "/",Today,".",PROJECTNAME,".AESCRNA.CEA.39pts.after_qc.IC_academic.BaselineTable.xlsx"),
format(as.data.frame(scRNAseqDataMetaAE.all.tableOne), digits = 5, scientific = FALSE),
rowNames = TRUE, colNames = TRUE,
sheetName = "AESCRNA_CEA", overwrite = TRUE)List of samples to be included based on informed consent (see above).
[1] "4440" "4447" "4443" "4450" "4453" "4470" "4459" "4458" "4455" "4487" "4472"
[12] "4480" "4477" "4448" "4486" "4488" "4502" "4500" "4501" "4530" "4541" "4542"
[23] "4513" "4535" "4546" "4545" "4571" "4489" "4491" "4495" "4496" "4521" "4520"
[34] "4580" "4602" "4605" "4601" "4676" "4653"
Just make sure to keep the rows
(patientid.plateid.cellid) in the
data, so we will create a new column for that.
Subsetting the samples of interest based on
samples_of_interest.
Selecting the clinical data of interest.
variables_of_interest <- c("Hospital", "ORyear", "Artery_summary",
"Age", "Gender",
"TC_final", "LDL_final", "HDL_final", "TG_final",
"systolic", "diastoli", "GFR_MDRD", "BMI",
"KDOQI", "BMI_WHO",
"SmokerStatus", "AlcoholUse",
"DiabetesStatus",
"Hypertension.selfreport", "Hypertension.selfreportdrug", "Hypertension.composite", "Hypertension.drugs",
"Med.anticoagulants", "Med.all.antiplatelet", "Med.Statin.LLD",
"Stroke_Dx",
"sympt", "Symptoms.5G", "AsymptSympt", "AsymptSympt2G",
"Symptoms.Update2G", "Symptoms.Update3G", "indexsymptoms_latest_4g",
"restenos", "stenose",
"CAD_history", "PAOD", "Peripheral.interv",
"EP_composite", "EP_composite_time", "EP_major", "EP_major_time")
temp <- subset(scRNAseqDataMetaAE.all, select = c("Patient", variables_of_interest))Now we are merging in the clinical data of interest.
# Step 1: Extract original metadata from Seurat object
original_metadata_df <- scRNAseqDataCEA39@meta.data
# Step 2: Merge with dataframe (temp) with select variables based on 'Patient' column
merged_metadata_df <- merge(original_metadata_df, temp, by = "Patient", all.x = TRUE, sort = FALSE)
# Step 3: Exclude already existing columns to avoid duplication
new_metadata_columns <- setdiff(colnames(temp), colnames(original_metadata_df))
new_meta_info_df <- merged_metadata_df[, new_metadata_columns, drop = FALSE]
# Step 4: Add the new metadata to the Seurat object
scRNAseqDataCEA39 <- AddMetaData(scRNAseqDataCEA39, metadata = new_meta_info_df)
# Step 5: Rename `Patient` to `STUDY_NUMBER` to match the clinical data
scRNAseqDataCEA39@meta.data <- dplyr::rename(scRNAseqDataCEA39@meta.data, "STUDY_NUMBER" = "Patient")
# Verify that the new metadata was added correctly
head(scRNAseqDataCEA39@meta.data)'data.frame': 4450 obs. of 75 variables:
$ orig.ident : chr "4440.P1" "4440.P1" "4440.P1" "4440.P1" ...
$ nCount_RNA : num 769 715 1749 903 1028 ...
$ nFeature_RNA : int 479 470 854 487 604 1263 949 3127 1163 858 ...
$ STUDY_NUMBER : chr "4440" "4440" "4440" "4440" ...
$ Plate : int 1 1 1 1 1 1 1 1 1 1 ...
$ Phenotype : chr "Atheromatous" "Atheromatous" "Atheromatous" "Atheromatous" ...
$ Sex : chr "male" "male" "male" "male" ...
$ CD68.score : int 3 3 3 3 3 3 3 3 3 3 ...
$ CD3.score : int 1 1 1 1 1 1 3 3 3 3 ...
$ CD34.score : int 0 0 0 0 0 0 1 1 1 1 ...
$ alpha.SMA.score : int 1 1 1 1 1 1 3 3 3 3 ...
$ SR.score : int 1 1 1 1 1 1 3 3 3 3 ...
$ Glyc.c.score : int 3 3 3 3 3 3 1 1 1 1 ...
$ Calcification : int 1 1 1 1 1 1 1 1 1 1 ...
$ Batch : int 2 2 2 2 2 2 2 2 2 2 ...
$ C.H : chr "ChiHplus" "ChiHplus" "ChiHplus" "ChiHplus" ...
$ Type : chr "carotid" "carotid" "carotid" "carotid" ...
$ ID : chr "4440.P1" "4440.P1" "4440.P1" "4440.P1" ...
$ percent.mt : num 11.6 10.5 9.6 18.7 11.5 ...
$ percent.KCNQ1OT1 : num 0.331 1.539 0.369 1.047 0.535 ...
$ percent.UGDH.AS1 : num 0.11 0.828 0 0.261 0.356 ...
$ percent.GHET1 : num 0 0 0 0 0 0 0 0 0 0 ...
$ percent.ROR1.AS1 : num 0 0 0 0 0 0 0 0 0 0 ...
$ nCount_SCT : num 1751 1677 2132 1961 1997 ...
$ nFeature_SCT : int 509 509 853 501 620 1262 948 1338 1162 856 ...
$ SCT_snn_res.1.25 : Factor w/ 24 levels "0","1","2","3",..: 1 4 14 4 4 18 5 14 5 5 ...
$ seurat_clusters : Factor w/ 20 levels "0","1","2","3",..: 1 4 11 7 13 17 5 11 5 5 ...
$ S.Score : num -0.0219 -0.0198 0.0193 -0.0115 -0.0276 ...
$ G2M.Score : num 0.0015 0.00471 -0.01872 -0.01502 -0.02276 ...
$ Phase : chr "G2M" "G2M" "S" "G1" ...
$ old.ident : Factor w/ 21 levels "0","1","2","3",..: 1 4 13 4 4 16 5 13 5 5 ...
$ SCT_snn_res.1.4 : Factor w/ 20 levels "0","1","2","3",..: 1 4 11 7 13 17 5 11 5 5 ...
$ cell.ident : chr "4440.P1.61" "4440.P1.137" "4440.P1.164" "4440.P1.176" ...
$ Hospital : Factor w/ 2 levels "St. Antonius, Nieuwegein",..: 2 2 2 2 2 2 2 2 2 2 ...
$ ORyear : Factor w/ 22 levels "No data available/missing",..: 18 18 18 18 18 18 18 18 18 18 ...
$ Artery_summary : Factor w/ 9 levels "No artery known (yet), no surgery (patient ill, died, exited study), re-numbered to AAA",..: 2 2 2 2 2 2 2 2 2 2 ...
$ Age : num 86 86 86 86 86 86 76 76 76 76 ...
$ Gender : Factor w/ 2 levels "female","male": 2 2 2 2 2 2 2 2 2 2 ...
$ TC_final : num 3.9 3.9 3.9 3.9 3.9 3.9 4 4 4 4 ...
$ LDL_final : num 2.3 2.3 2.3 2.3 2.3 2.3 NA NA NA NA ...
$ HDL_final : num 1.3 1.3 1.3 1.3 1.3 1.3 1.4 1.4 1.4 1.4 ...
$ TG_final : num 0.6 0.6 0.6 0.6 0.6 0.6 NA NA NA NA ...
$ systolic : num 149 149 149 149 149 149 187 187 187 187 ...
$ diastoli : num 99 99 99 99 99 99 84 84 84 84 ...
$ GFR_MDRD : num 40.9 40.9 40.9 40.9 40.9 ...
$ BMI : num 24.2 24.2 24.2 24.2 24.2 ...
$ KDOQI : Factor w/ 6 levels "No data available/missing",..: 4 4 4 4 4 4 2 2 2 2 ...
$ BMI_WHO : Factor w/ 5 levels "No data available/missing",..: 3 3 3 3 3 3 3 3 3 3 ...
$ SmokerStatus : Factor w/ 3 levels "Current smoker",..: 3 3 3 3 3 3 2 2 2 2 ...
$ AlcoholUse : Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
$ DiabetesStatus : Factor w/ 2 levels "Control (no Diabetes Dx/Med)",..: 1 1 1 1 1 1 1 1 1 1 ...
$ Hypertension.selfreport : Factor w/ 3 levels "No data available/missing",..: 3 3 3 3 3 3 3 3 3 3 ...
$ Hypertension.selfreportdrug: Factor w/ 3 levels "No data available/missing",..: 3 3 3 3 3 3 3 3 3 3 ...
$ Hypertension.composite : Factor w/ 3 levels "No data available/missing",..: 3 3 3 3 3 3 3 3 3 3 ...
$ Hypertension.drugs : Factor w/ 3 levels "No data available/missing",..: 3 3 3 3 3 3 3 3 3 3 ...
$ Med.anticoagulants : Factor w/ 3 levels "No data available/missing",..: 3 3 3 3 3 3 2 2 2 2 ...
$ Med.all.antiplatelet : Factor w/ 3 levels "No data available/missing",..: 2 2 2 2 2 2 3 3 3 3 ...
$ Med.Statin.LLD : Factor w/ 3 levels "No data available/missing",..: 3 3 3 3 3 3 3 3 3 3 ...
$ Stroke_Dx : Factor w/ 3 levels "Missing","No stroke diagnosed",..: 3 3 3 3 3 3 2 2 2 2 ...
$ sympt : Factor w/ 18 levels "missing","Asymptomatic",..: 4 4 4 4 4 4 3 3 3 3 ...
$ Symptoms.5G : Factor w/ 6 levels "Asymptomatic",..: 5 5 5 5 5 5 6 6 6 6 ...
$ AsymptSympt : Factor w/ 3 levels "Asymptomatic",..: 3 3 3 3 3 3 3 3 3 3 ...
$ AsymptSympt2G : Factor w/ 2 levels "Asymptomatic",..: 2 2 2 2 2 2 2 2 2 2 ...
$ Symptoms.Update2G : Factor w/ 2 levels "Asymptomatic",..: 2 2 2 2 2 2 2 2 2 2 ...
$ Symptoms.Update3G : Factor w/ 3 levels "Asymptomatic",..: 2 2 2 2 2 2 2 2 2 2 ...
$ indexsymptoms_latest_4g : Factor w/ 5 levels "asymp","ocular",..: 4 4 4 4 4 4 3 3 3 3 ...
$ restenos : Factor w/ 4 levels "missing","de novo",..: 2 2 2 2 2 2 2 2 2 2 ...
$ stenose : Factor w/ 10 levels "missing","0-49%",..: 4 4 4 4 4 4 9 9 9 9 ...
$ CAD_history : Factor w/ 3 levels "Missing","No history CAD",..: 3 3 3 3 3 3 2 2 2 2 ...
$ PAOD : Factor w/ 3 levels "missing/no data",..: 2 2 2 2 2 2 2 2 2 2 ...
$ Peripheral.interv : Factor w/ 2 levels "no","yes": 1 1 1 1 1 1 1 1 1 1 ...
$ EP_composite : Factor w/ 3 levels "No data available.",..: 3 3 3 3 3 3 2 2 2 2 ...
$ EP_composite_time : num 0.011 0.011 0.011 0.011 0.011 ...
$ EP_major : Factor w/ 3 levels "No data available.",..: 3 3 3 3 3 3 2 2 2 2 ...
$ EP_major_time : num 0.011 0.011 0.011 0.011 0.011 ...
# Get the SampleList
temp2 <- as_tibble(subset(scRNAseqDataCEA39@meta.data,
select = c("STUDY_NUMBER", "cell.ident", "nCount_RNA", "nFeature_RNA",
"Plate", "Batch", "C.H", "Type", "percent.mt",
"percent.KCNQ1OT1", "percent.UGDH.AS1", "percent.GHET1", "percent.ROR1.AS1",
"nCount_SCT", "nFeature_SCT", "seurat_clusters", "SCT_snn_res.1.25",
"S.Score", "G2M.Score", "Phase")))
# Get the ClinicalData
temp <- as_tibble(subset(scRNAseqDataCEA39@meta.data,
select = c("STUDY_NUMBER", "cell.ident",
"Phenotype",
"CD68.score", "CD3.score", "CD34.score", "alpha.SMA.score",
"SR.score", "Glyc.c.score", "Calcification", variables_of_interest)))
# Get the counts
temp3 <- as_tibble(scRNAseqDataCEA39@assays$RNA@counts, rownames = "GeneSymbol")
temp4 <- as_tibble(scRNAseqDataCEA39@assays$SCT@counts, rownames = "GeneSymbol")
fwrite(temp2,
file = paste0(OUT_loc, "/", Today, ".AESCRNA.CEA.39pts.samplelist.after_qc.IC_academic.csv"),
sep = ",", row.names = FALSE, col.names = TRUE,
showProgress = TRUE)
rm(temp2)
fwrite(temp,
file = paste0(OUT_loc, "/", Today, ".AESCRNA.CEA.39pts.clinicaldata.after_qc.IC_academic.csv"),
sep = ",", row.names = FALSE, col.names = TRUE,
showProgress = TRUE)
rm(temp)
fwrite(temp3,
file = paste0(OUT_loc, "/", Today, ".AESCRNA.CEA.39pts.RNAcounts.after_qc.IC_academic.csv"),
sep = ",", row.names = FALSE, col.names = TRUE,
showProgress = TRUE)
rm(temp3)
fwrite(temp4,
file = paste0(OUT_loc, "/", Today, ".AESCRNA.CEA.39pts.SCTcounts.after_qc.IC_academic.csv"),
sep = ",", row.names = FALSE, col.names = TRUE,
showProgress = TRUE)
rm(temp4)
saveRDS(scRNAseqDataCEA39, file = paste0(OUT_loc, "/", Today, ".AESCRNA.CEA.39pts.Seurat.after_qc.IC_academic.RDS"))Here review the number of cells per sample, plate, and patients. And plot the ratio’s per sample and study number.
How many cells per type ...?
7 14 20 16 22 23 21 12 19 18 17 15 2 10 11 9 13 5 8 4 6 3 0 1
0 0 0 8 17 19 23 26 55 78 94 112 172 173 176 198 199 242 243 293 297 348 831 846
# cat("\n\nHow many cells per plate ...?")
# sort(table(scRNAseqDataCEA39@meta.data$ID))
# cat("\n\nHow many cells per type per plate ...?")
# table(scRNAseqDataCEA39@meta.data$SCT_snn_res.0.8, scRNAseqDataCEA39@meta.data$ID)
cat("\n\nHow many cells per patient ...?")
How many cells per patient ...?
4530 4440 4605 4653 4472 4458 4455 4496 4601 4502 4501 4571 4448 4477 4459 4520 4602 4489 4495 4545 4480 4447 4500 4513 4535 4676 4486
3 6 7 20 22 35 54 70 70 73 75 76 80 84 94 96 96 97 102 106 112 114 116 123 130 135 137
4470 4487 4546 4488 4521 4580 4491 4541 4450 4542 4453 4443
144 144 144 146 161 163 175 178 205 213 222 422
Visualizing these ratio's per study number and sample ...?
UMAPPlot(scRNAseqDataCEA39, label = TRUE, pt.size = 1.25, label.size = 4, group.by = "ident",
repel = TRUE)
ggsave(paste0(PLOT_loc, "/", Today, ".UMAP.png"), plot = last_plot())Saving 7.29 x 4.51 in image
Saving 7.29 x 4.51 in image
# barplot(prop.table(x = table(scRNAseqDataCEA39@active.ident, scRNAseqDataCEA39@meta.data$Patient)),
# cex.axis = 1.0, cex.names = 0.5, las = 1,
# col = uithof_color, xlab = "study number", legend.text = FALSE, args.legend = list(x = "bottom"))
# dev.copy(pdf, paste0(QC_loc, "/", Today, ".cell_ratios_per_sample.pdf"))
# dev.off()
# barplot(prop.table(x = table(scRNAseqDataCEA39@active.ident, scRNAseqDataCEA39@meta.data$ID)),
# cex.axis = 1.0, cex.names = 0.5, las = 2,
# col = uithof_color, xlab = "sample ID", legend.text = FALSE, args.legend = list(x = "bottom"))
# dev.copy(pdf, paste0(QC_loc, "/", Today, ".cell_ratios_per_sample_per_plate.pdf"))
# dev.off()Let’s project known cellular markers.
UMAPPlot(scRNAseqDataCEA39, label = FALSE, pt.size = 1.25, label.size = 4, group.by = "ident",
repel = TRUE)
# endothelial cells
FeaturePlot(scRNAseqDataCEA39, features = c("CD34"), cols = c("#ECECEC", "#DB003F"))
# macrophages
FeaturePlot(scRNAseqDataCEA39, features = c("CD14", "CD68"), cols = c("#ECECEC", "#DB003F"))# FeaturePlot(scRNAseqDataCEA39, features = c("CD8"), cols = c("#ECECEC", "#DB003F"))
# b-cells
FeaturePlot(scRNAseqDataCEA39, features = c("CD79A"), cols = c("#ECECEC", "#DB003F"))We check whether the targets genes were sequenced using our method. In case some genes are not available in our data we could filter them here.
[1] "SCGB3A2" "LIX1" "IGSF9B" "ND6" "ALB" "OR10A4" "RASEF" "NEDD4" "TRIM49D1" "TCL1A" "ND4L" "ATP8"
[13] "FBXO15" "F5" "TMEM212" "PTPRD" "CYP46A1" "OR2T33" "SORBS2" "ITGA7" "RNASE1" "FOS" "HMOX1" "LAPTM5"
[25] "MMP9" "SIGLEC1" "FTL" "CD14" "HCST" "TIMP3" "CCL2" "SAT1" "CD163" "PTGDS" "LGALS9" "ACKR1"
[37] "NT5DC2" "TGFBI" "C1QC" "S100A9"
This is to filter the list from genes that are not in the data.
gene_list_rm <- c("ND6", "TRIM49D1", "ND4L", "ATP8", "RNASE1")
temp = target_genes[!target_genes %in% gene_list_rm]
target_genes_qc <- c(temp)
# gene_list_qc <- gene_list
#
# for debug
# gene_list_qc_replace <- c("MRTFA")
# target_genes_qc <- target_genes
target_genes_qc [1] "SCGB3A2" "LIX1" "IGSF9B" "ALB" "OR10A4" "RASEF" "NEDD4" "TCL1A" "FBXO15" "F5" "TMEM212" "PTPRD" "CYP46A1"
[14] "OR2T33" "SORBS2" "ITGA7" "FOS" "HMOX1" "LAPTM5" "MMP9" "SIGLEC1" "FTL" "CD14" "HCST" "TIMP3" "CCL2"
[27] "SAT1" "CD163" "PTGDS" "LGALS9" "ACKR1" "NT5DC2" "TGFBI" "C1QC" "S100A9"
library(RColorBrewer)
p1 <- DotPlot(scRNAseqDataCEA39, features = target_genes_qc,
cols = "RdBu")
p1 + theme(axis.text.x = element_text(angle = 45, hjust=1, size = 8))
ggsave(paste0(PLOT_loc, "/", Today, ".DotPlot.Targets.png"), plot = last_plot())ggsave(paste0(PLOT_loc, "/", Today, ".DotPlot.Targets.ps"), plot = last_plot())
ggsave(paste0(PLOT_loc, "/", Today, ".DotPlot.Targets.pdf"), plot = last_plot())
rm(p1)
# FeaturePlot(scRNAseqDataCEA39, features = c(target_genes_qc),
# cols = c("#ECECEC", "#DB003F", "#9A3480","#1290D9"),
# combine = TRUE)
#
# ggsave(paste0(PLOT_loc, "/", Today, ".FeaturePlot.Targets.png"), plot = last_plot())
# ggsave(paste0(PLOT_loc, "/", Today, ".FeaturePlot.Targets.ps"), plot = last_plot())Let’s group this dotplot based on up- and down-regulation. First, we filter the target list for up- and down-regulated genes.
# Assuming 'gene_info' is your data.frame with the relevant columns loaded
gene_list_df_filtered <- subset(gene_list_df, Comments != "not in scRNAseq" | is.na(Comments))
gene_list_df_filtered# Separate genes by significance
up_genes <- gene_list_df_filtered$GeneSymbol[gene_list_df_filtered$significance == "UP"]
down_genes <- gene_list_df_filtered$GeneSymbol[gene_list_df_filtered$significance == "DOWN"]
# Combine the genes, first DOWN then UP (or vice versa based on preference)
ordered_genes_qc <- c(down_genes, up_genes)library(RColorBrewer)
# Create DotPlot grouped by 'significance_group'
p1 <- DotPlot(scRNAseqDataCEA39,
features = ordered_genes_qc,
cols = "RdBu") + theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 8))
p1
# Save the plots
ggsave(paste0(PLOT_loc, "/", Today, ".DotPlot.Targets.SignificanceGrouped.png"), plot = p1)Saving 7.29 x 4.51 in image
Saving 7.29 x 4.51 in image
Saving 7.29 x 4.51 in image
# VlnPlot(scRNAseqDataCEA39, features = "DUSP27")
# VlnPlot files
ifelse(!dir.exists(file.path(PLOT_loc, "/VlnPlot")),
dir.create(file.path(PLOT_loc, "/VlnPlot")),
FALSE)[1] FALSE
VlnPlot_loc = paste0(PLOT_loc, "/VlnPlot")
for (GENE in target_genes_qc){
print(paste0("Projecting the expression of ", GENE, "."))
vp1 <- VlnPlot(scRNAseqDataCEA39, features = GENE) +
xlab("cell communities") +
ylab(bquote("normalized expression")) +
theme(axis.title.x = element_text(color = "#000000", size = 14, face = "bold"),
axis.title.y = element_text(color = "#000000", size = 14, face = "bold"),
legend.position = "none")
ggsave(paste0(VlnPlot_loc, "/", Today, ".VlnPlot.",GENE,".png"), plot = last_plot())
ggsave(paste0(VlnPlot_loc, "/", Today, ".VlnPlot.",GENE,".ps"), plot = last_plot())
ggsave(paste0(VlnPlot_loc, "/", Today, ".VlnPlot.",GENE,".pdf"), plot = last_plot())
# print(vp1)
}[1] "Projecting the expression of SCGB3A2."
Saving 7 x 7 in image
[1] "Projecting the expression of LIX1."
[1] "Projecting the expression of IGSF9B."
[1] "Projecting the expression of ALB."
[1] "Projecting the expression of OR10A4."
[1] "Projecting the expression of RASEF."
[1] "Projecting the expression of NEDD4."
[1] "Projecting the expression of TCL1A."
[1] "Projecting the expression of FBXO15."
[1] "Projecting the expression of F5."
[1] "Projecting the expression of TMEM212."
[1] "Projecting the expression of PTPRD."
[1] "Projecting the expression of CYP46A1."
[1] "Projecting the expression of OR2T33."
[1] "Projecting the expression of SORBS2."
[1] "Projecting the expression of ITGA7."
[1] "Projecting the expression of FOS."
[1] "Projecting the expression of HMOX1."
[1] "Projecting the expression of LAPTM5."
[1] "Projecting the expression of MMP9."
[1] "Projecting the expression of SIGLEC1."
[1] "Projecting the expression of FTL."
[1] "Projecting the expression of CD14."
[1] "Projecting the expression of HCST."
[1] "Projecting the expression of TIMP3."
[1] "Projecting the expression of CCL2."
[1] "Projecting the expression of SAT1."
[1] "Projecting the expression of CD163."
[1] "Projecting the expression of PTGDS."
[1] "Projecting the expression of LGALS9."
[1] "Projecting the expression of ACKR1."
[1] "Projecting the expression of NT5DC2."
[1] "Projecting the expression of TGFBI."
[1] "Projecting the expression of C1QC."
[1] "Projecting the expression of S100A9."
Here we project genes to only the broad cell communities:
[1] CD3+ TC I CD3+ TC IV CD34+ EC I CD3+ TC V CD3+CD56+ NK II
[6] CD3+ TC VI CD68+IL18+TLR4+TREM2+ MRes CD3+CD56+ NK I ACTA2+ SMC CD3+ TC II
[11] FOXP3+ TC CD34+ EC II CD3+ TC III CD68+CD1C+ DC CD68+CASP1+IL1B+SELL MInf
[16] CD79A+ BCmem CD68+ABCA1+OLR1+TREM2+ FC CD68+KIT+ MC CD68+CD4+ Mono CD79+ BCplasma
20 Levels: CD68+CD4+ Mono CD68+IL18+TLR4+TREM2+ MRes CD68+CD1C+ DC CD68+CASP1+IL1B+SELL MInf CD68+ABCA1+OLR1+TREM2+ FC ... CD79+ BCplasma
Comparison between the macrophages cell communities (CD14/CD68+), and all other communities.
MAC.markers <- FindMarkers(object = scRNAseqDataCEA39,
ident.1 = c("CD68+CASP1+IL1B+SELL MInf",
"CD68+CD1C+ DC",
"CD68+CD4+ Mono",
"CD68+IL18+TLR4+TREM2+ MRes",
"CD68+ABCA1+OLR1+TREM2+ FC"),
ident.2 = c(#"CD68+CASP1+IL1B+SELL MInf",
#"CD68+CD1C+ DC",
#"CD68+CD4+ Mono",
#"CD68+IL18+TLR4+TREM2+ MRes",
#"CD68+ABCA1+OLR1+TREM2+ FC",
"CD3+ TC I",
"CD3+ TC II",
"CD3+ TC III",
"CD3+ TC IV",
"CD3+ TC V",
"CD3+ TC VI",
"FOXP3+ TC",
"CD34+ EC I",
"CD34+ EC II",
"ACTA2+ SMC",
"CD3+CD56+ NK I",
"CD3+CD56+ NK II",
"CD68+KIT+ MC",
"CD79+ BCplasma",
"CD79A+ BCmem"))
DT::datatable(MAC.markers)Warning: It seems your data is too big for client-side DataTables. You may consider server-side processing: https://rstudio.github.io/DT/server.htmlWarning: It seems your data is too big for client-side DataTables. You may consider server-side processing: https://rstudio.github.io/DT/server.html
MAC_Volcano_TargetsA = EnhancedVolcano(MAC.markers,
lab = rownames(MAC.markers),
x = "avg_log2FC",
y = "p_val_adj",
selectLab = target_genes_qc,
axisLabSize = 12,
xlab = "average fold-change",
title = "Macrophage markers\n(Macrophage communities vs the rest)",
titleLabSize = 14,
pCutoff = 0.05/(nrow(MAC.markers)), # 20552 genes
FCcutoff = 1.25,
pointSize = 1.5,
labSize = 3.0,
legendLabels =c('NS','avg. fold-change','P',
'P & avg. fold-change'),
legendPosition = "right",
legendLabSize = 10,
legendIconSize = 3.0,
drawConnectors = TRUE,
widthConnectors = 0.2,
colConnectors = "#595A5C",
gridlines.major = FALSE,
gridlines.minor = FALSE)
MAC_Volcano_TargetsA
ggsave(paste0(PLOT_loc, "/", Today, ".Volcano.MAC.DEG.Targets.pdf"),
plot = MAC_Volcano_TargetsA)The target results are given below and written to a file.
Comparison between the smooth muscle cell communities (ACTA2+), and all other communities.
SMC.markers <- FindMarkers(object = scRNAseqDataCEA39,
ident.1 = c("ACTA2+ SMC"),
ident.2 = c("CD68+CASP1+IL1B+SELL MInf",
"CD68+CD1C+ DC",
"CD68+CD4+ Mono",
"CD68+IL18+TLR4+TREM2+ MRes",
"CD68+ABCA1+OLR1+TREM2+ FC",
"CD3+ TC I",
"CD3+ TC II",
"CD3+ TC III",
"CD3+ TC IV",
"CD3+ TC V",
"CD3+ TC VI",
"FOXP3+ TC",
"CD34+ EC I",
"CD34+ EC II",
#"ACTA2+ SMC",
"CD3+CD56+ NK I",
"CD3+CD56+ NK II",
"CD68+KIT+ MC",
"CD79+ BCplasma",
"CD79A+ BCmem"))
DT::datatable(SMC.markers)Warning: It seems your data is too big for client-side DataTables. You may consider server-side processing: https://rstudio.github.io/DT/server.htmlWarning: It seems your data is too big for client-side DataTables. You may consider server-side processing: https://rstudio.github.io/DT/server.html
SMC_Volcano_TargetsA = EnhancedVolcano(SMC.markers,
lab = rownames(SMC.markers),
x = "avg_log2FC",
y = "p_val_adj",
selectLab = target_genes_qc,
axisLabSize = 12,
xlab = "average fold-change",
title = "SMC markers\n(SMC communities vs the rest)",
titleLabSize = 14,
pCutoff = 0.05/(nrow(SMC.markers)), # 20552 genes
FCcutoff = 1.25,
pointSize = 1.5,
labSize = 3.0,
legendLabels =c('NS','avg. fold-change','P',
'P & avg. fold-change'),
legendPosition = "right",
legendLabSize = 10,
legendIconSize = 3.0,
drawConnectors = TRUE,
widthConnectors = 0.2,
colConnectors = "#595A5C",
gridlines.major = FALSE,
gridlines.minor = FALSE)
SMC_Volcano_TargetsA
ggsave(paste0(PLOT_loc, "/", Today, ".Volcano.SMC.DEG.Targets.pdf"),
plot = SMC_Volcano_TargetsA)The target results are given below and written to a file.
Comparison between the endothelial cell communities (CD34+), and all other communities.
EC.markers <- FindMarkers(object = scRNAseqDataCEA39,
ident.1 = c("CD34+ EC I",
"CD34+ EC II"),
ident.2 = c("CD68+CASP1+IL1B+SELL MInf",
"CD68+CD1C+ DC",
"CD68+CD4+ Mono",
"CD68+IL18+TLR4+TREM2+ MRes",
"CD68+ABCA1+OLR1+TREM2+ FC",
"CD3+ TC I",
"CD3+ TC II",
"CD3+ TC III",
"CD3+ TC IV",
"CD3+ TC V",
"CD3+ TC VI",
"FOXP3+ TC",
# "CD34+ EC I",
# "CD34+ EC II",
"ACTA2+ SMC",
"CD3+CD56+ NK I",
"CD3+CD56+ NK II",
"CD68+KIT+ MC",
"CD79+ BCplasma",
"CD79A+ BCmem"))
DT::datatable(EC.markers)Warning: It seems your data is too big for client-side DataTables. You may consider server-side processing: https://rstudio.github.io/DT/server.htmlWarning: It seems your data is too big for client-side DataTables. You may consider server-side processing: https://rstudio.github.io/DT/server.html
EC_Volcano_TargetsA = EnhancedVolcano(EC.markers,
lab = rownames(EC.markers),
x = "avg_log2FC",
y = "p_val_adj",
selectLab = target_genes_qc,
axisLabSize = 12,
xlab = "average fold-change",
title = "Endothelial cell markers\n(EC communities vs the rest)",
titleLabSize = 14,
pCutoff = 0.05/(nrow(EC.markers)), # 20552 genes
FCcutoff = 1.25,
pointSize = 1.5,
labSize = 3.0,
legendLabels =c('NS','avg. fold-change','P',
'P & avg. fold-change'),
legendPosition = "right",
legendLabSize = 10,
legendIconSize = 3.0,
drawConnectors = TRUE,
widthConnectors = 0.2,
colConnectors = "#595A5C",
gridlines.major = FALSE,
gridlines.minor = FALSE)
EC_Volcano_TargetsA
ggsave(paste0(PLOT_loc, "/", Today, ".Volcano.EC.DEG.Targets.pdf"),
plot = EC_Volcano_TargetsA)The target results are given below and written to a file.
Comparison between the T-cell communities (CD3/CD4/CD8+), and all other communities.
TC.markers <- FindMarkers(object = scRNAseqDataCEA39,
ident.1 = c("CD3+ TC I",
"CD3+ TC II",
"CD3+ TC III",
"CD3+ TC IV",
"CD3+ TC V",
"CD3+ TC VI",
"FOXP3+ TC"),
ident.2 = c("CD68+CASP1+IL1B+SELL MInf",
"CD68+CD1C+ DC",
"CD68+CD4+ Mono",
"CD68+IL18+TLR4+TREM2+ MRes",
"CD68+ABCA1+OLR1+TREM2+ FC",
# "CD3+ TC I",
# "CD3+ TC II",
# "CD3+ TC III",
# "CD3+ TC IV",
# "CD3+ TC V",
# "CD3+ TC VI",
# "FOXP3+ TC",
"CD34+ EC I",
"CD34+ EC II",
"ACTA2+ SMC",
"CD3+CD56+ NK I",
"CD3+CD56+ NK II",
"CD68+KIT+ MC",
"CD79+ BCplasma",
"CD79A+ BCmem"))
DT::datatable(TC.markers)Warning: It seems your data is too big for client-side DataTables. You may consider server-side processing: https://rstudio.github.io/DT/server.htmlWarning: It seems your data is too big for client-side DataTables. You may consider server-side processing: https://rstudio.github.io/DT/server.html
TC_Volcano_TargetsA = EnhancedVolcano(TC.markers,
lab = rownames(TC.markers),
x = "avg_log2FC",
y = "p_val_adj",
selectLab = target_genes_qc,
axisLabSize = 12,
xlab = "average fold-change",
title = "T-cell markers\n(T-cell communities vs the rest)",
titleLabSize = 14,
pCutoff = 0.05/nrow(TC.markers), # 20552 genes
FCcutoff = 1.25,
pointSize = 1.5,
labSize = 3.0,
legendLabels =c('NS','avg. fold-change','P',
'P & avg. fold-change'),
legendPosition = "right",
legendLabSize = 10,
legendIconSize = 3.0,
drawConnectors = TRUE,
widthConnectors = 0.2,
colConnectors = "#595A5C",
gridlines.major = FALSE,
gridlines.minor = FALSE)
TC_Volcano_TargetsA
ggsave(paste0(PLOT_loc, "/", Today, ".Volcano.TC.DEG.Targets.pdf"),
plot = TC_Volcano_TargetsA)The target results are given below and written to a file.
Comparison between the B-cell communities (CD79A+), and all other communities.
BC.markers <- FindMarkers(object = scRNAseqDataCEA39,
ident.1 = c("CD79+ BCplasma",
"CD79A+ BCmem"),
ident.2 = c("CD68+CASP1+IL1B+SELL MInf",
"CD68+CD1C+ DC",
"CD68+CD4+ Mono",
"CD68+IL18+TLR4+TREM2+ MRes",
"CD68+ABCA1+OLR1+TREM2+ FC",
"CD3+ TC I",
"CD3+ TC II",
"CD3+ TC III",
"CD3+ TC IV",
"CD3+ TC V",
"CD3+ TC VI",
"FOXP3+ TC",
"CD34+ EC I",
"CD34+ EC II",
"ACTA2+ SMC",
"CD3+CD56+ NK I",
"CD3+CD56+ NK II",
"CD68+KIT+ MC"
# "CD79+ BCplasma",
# "CD79A+ BCmem"
))
DT::datatable(BC.markers)Warning: It seems your data is too big for client-side DataTables. You may consider server-side processing: https://rstudio.github.io/DT/server.htmlWarning: It seems your data is too big for client-side DataTables. You may consider server-side processing: https://rstudio.github.io/DT/server.html
BC_Volcano_TargetsA = EnhancedVolcano(BC.markers,
lab = rownames(BC.markers),
x = "avg_log2FC",
y = "p_val_adj",
selectLab = target_genes_qc,
axisLabSize = 12,
xlab = "average fold-change",
title = "B-cell markers\n(B-cell communities vs the rest)",
titleLabSize = 14,
pCutoff = 0.05/nrow(BC.markers), # 20552 genes
FCcutoff = 1.25,
pointSize = 1.5,
labSize = 3.0,
legendLabels =c('NS','avg. fold-change','P',
'P & avg. fold-change'),
legendPosition = "right",
legendLabSize = 10,
legendIconSize = 3.0,
drawConnectors = TRUE,
widthConnectors = 0.2,
colConnectors = "#595A5C",
gridlines.major = FALSE,
gridlines.minor = FALSE)
BC_Volcano_TargetsA
ggsave(paste0(PLOT_loc, "/", Today, ".Volcano.BC.DEG.Targets.pdf"),
plot = BC_Volcano_TargetsA)The target results are given below and written to a file.
Comparison between the mast cell communities (KIT+), and all other communities.
MC.markers <- FindMarkers(object = scRNAseqDataCEA39,
ident.1 = c("CD68+KIT+ MC"),
ident.2 = c("CD68+CASP1+IL1B+SELL MInf",
"CD68+CD1C+ DC",
"CD68+CD4+ Mono",
"CD68+IL18+TLR4+TREM2+ MRes",
"CD68+ABCA1+OLR1+TREM2+ FC",
"CD3+ TC I",
"CD3+ TC II",
"CD3+ TC III",
"CD3+ TC IV",
"CD3+ TC V",
"CD3+ TC VI",
"FOXP3+ TC",
"CD34+ EC I",
"CD34+ EC II",
"ACTA2+ SMC",
"CD3+CD56+ NK I",
"CD3+CD56+ NK II",
# "CD68+KIT+ MC",
"CD79+ BCplasma",
"CD79A+ BCmem"))
DT::datatable(MC.markers)Warning: It seems your data is too big for client-side DataTables. You may consider server-side processing: https://rstudio.github.io/DT/server.htmlWarning: It seems your data is too big for client-side DataTables. You may consider server-side processing: https://rstudio.github.io/DT/server.html
MC_Volcano_TargetsA = EnhancedVolcano(MC.markers,
lab = rownames(MC.markers),
x = "avg_log2FC",
y = "p_val_adj",
selectLab = target_genes_qc,
axisLabSize = 12,
xlab = "average fold-change",
title = "Mast cell markers\n(Mast cell communities vs the rest)",
titleLabSize = 14,
pCutoff = 0.05/nrow(MC.markers), # 20552 genes
FCcutoff = 1.25,
pointSize = 1.5,
labSize = 3.0,
legendLabels =c('NS','avg. fold-change','P',
'P & avg. fold-change'),
legendPosition = "right",
legendLabSize = 10,
legendIconSize = 3.0,
drawConnectors = TRUE,
widthConnectors = 0.2,
colConnectors = "#595A5C",
gridlines.major = FALSE,
gridlines.minor = FALSE)
MC_Volcano_TargetsA
ggsave(paste0(PLOT_loc, "/", Today, ".Volcano.MC.DEG.Targets.pdf"),
plot = MC_Volcano_TargetsA)The target results are given below and written to a file.
Comparison between the natural killer cell communities (NCAM1+), and all other communities.
NK.markers <- FindMarkers(object = scRNAseqDataCEA39,
ident.1 = c("CD3+CD56+ NK I",
"CD3+CD56+ NK II"),
ident.2 = c("CD68+CASP1+IL1B+SELL MInf",
"CD68+CD1C+ DC",
"CD68+CD4+ Mono",
"CD68+IL18+TLR4+TREM2+ MRes",
"CD68+ABCA1+OLR1+TREM2+ FC",
"CD3+ TC I",
"CD3+ TC II",
"CD3+ TC III",
"CD3+ TC IV",
"CD3+ TC V",
"CD3+ TC VI",
"FOXP3+ TC",
"CD34+ EC I",
"CD34+ EC II",
"ACTA2+ SMC",
# "CD3+CD56+ NK I",
# "CD3+CD56+ NK II",
"CD68+KIT+ MC",
"CD79+ BCplasma",
"CD79A+ BCmem"))
DT::datatable(NK.markers)Warning: It seems your data is too big for client-side DataTables. You may consider server-side processing: https://rstudio.github.io/DT/server.htmlWarning: It seems your data is too big for client-side DataTables. You may consider server-side processing: https://rstudio.github.io/DT/server.html
NK_Volcano_TargetsA = EnhancedVolcano(NK.markers,
lab = rownames(NK.markers),
x = "avg_log2FC",
y = "p_val_adj",
selectLab = target_genes_qc,
axisLabSize = 12,
xlab = "average fold-change",
title = "NK markers\n(NK-cell communities vs the rest)",
titleLabSize = 14,
pCutoff = 0.05/nrow(NK.markers), # 20552 genes
FCcutoff = 1.25,
pointSize = 1.5,
labSize = 3.0,
legendLabels =c('NS','avg. fold-change','P',
'P & avg. fold-change'),
legendPosition = "right",
legendLabSize = 10,
legendIconSize = 3.0,
drawConnectors = TRUE,
widthConnectors = 0.2,
colConnectors = "#595A5C",
gridlines.major = FALSE,
gridlines.minor = FALSE)
NK_Volcano_TargetsA
ggsave(paste0(PLOT_loc, "/", Today, ".Volcano.NK.DEG.Targets.pdf"),
plot = NK_Volcano_TargetsA)The target results are given below and written to a file.
Version: v1.2.0
Last update: 2024-10-17
Written by: Sander W. van der Laan (s.w.vanderlaan-2[at]umcutrecht.nl).
Description: Script to load single-cell RNA sequencing (scRNAseq) data, and perform quality control (QC), and initial mapping to cells.
Minimum requirements: R version 3.5.2 (2018-12-20) -- 'Eggshell Igloo', macOS Mojave (10.14.2).
**MoSCoW To-Do List**
The things we Must, Should, Could, and Would have given the time we have.
_M_
_S_
_C_
_W_
**Changes log**
* v1.2.0 Fixed issue where the cell identities were lost when subsetting Seurat object. Added grouped DotPlot.
* v1.1.1 Textual fixes.
* v1.1.1 Fix writing baseline table.
* v1.1.0 Update to study database.
* v1.0.2 Fixes to the start of the notebook. Update to loading of the clinical data. Fix on the gene-filtering.
* v1.0.1 Update to main AEDB (there is an error in the Age-variable in the new version). Fewer patients in scRNAseq (32 vs 39 with the newer dataset).
* v1.0.0 Initial version.
R version 4.4.1 (2024-06-14)
Platform: x86_64-apple-darwin20
Running under: macOS 15.1
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/lib/libRlapack.dylib; LAPACK version 3.12.0
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
time zone: America/New_York
tzcode source: internal
attached base packages:
[1] stats4 grid tools stats graphics grDevices utils datasets methods base
other attached packages:
[1] MASS_7.3-61 RColorBrewer_1.1-3 Seurat_5.1.0
[4] SeuratObject_5.0.2 sp_2.1-4 BiocManager_1.30.25
[7] magrittr_2.0.3 rmarkdown_2.28 annotables_0.2.0
[10] EnhancedVolcano_1.22.0 ggrepel_0.9.6 AnnotationFilter_1.28.0
[13] TxDb.Hsapiens.UCSC.hg19.knownGene_3.2.2 mygene_1.40.0 txdbmaker_1.0.1
[16] org.Hs.eg.db_3.19.1 DESeq2_1.44.0 SummarizedExperiment_1.34.0
[19] MatrixGenerics_1.16.0 matrixStats_1.4.1 GenomicFeatures_1.56.0
[22] GenomicRanges_1.56.2 AnnotationDbi_1.66.0 Biobase_2.64.0
[25] GenomeInfoDb_1.40.1 IRanges_2.38.1 S4Vectors_0.42.1
[28] BiocGenerics_0.50.0 Hmisc_5.1-3 survminer_0.4.9
[31] survival_3.7-0 GGally_2.2.1 PerformanceAnalytics_2.0.4
[34] xts_0.14.0 zoo_1.8-12 ggcorrplot_0.1.4.999
[37] corrr_0.4.4 reshape2_1.4.4 meta_7.0-0
[40] metadat_1.2-0 qqman_0.1.9 sjlabelled_1.2.0
[43] patchwork_1.3.0.9000 labelled_2.13.0 sjPlot_2.8.16
[46] UpSetR_1.4.0 ggpubr_0.6.0.999 forestplot_3.1.5
[49] abind_1.4-8 checkmate_2.3.2 pheatmap_1.0.12
[52] devtools_2.4.5 usethis_3.0.0 BlandAltmanLeh_0.3.1
[55] tableone_0.13.2 openxlsx_4.2.7.1 haven_2.5.4
[58] eeptools_1.2.5 DT_0.33 knitr_1.48
[61] lubridate_1.9.3 forcats_1.0.0 stringr_1.5.1
[64] purrr_1.0.2 tibble_3.2.1 ggplot2_3.5.1
[67] tidyverse_2.0.0 data.table_1.16.2 naniar_1.1.0
[70] tidylog_1.1.0 tidyr_1.3.1 dplyr_1.1.4
[73] optparse_1.7.5 readr_2.1.5 pander_0.6.5
[76] R.utils_2.12.3 R.oo_1.26.0 R.methodsS3_1.8.2
[79] worcs_0.1.15 credentials_2.0.2
loaded via a namespace (and not attached):
[1] igraph_2.0.3 ica_1.0-3 plotly_4.10.4 Formula_1.2-5 zlibbioc_1.50.0
[6] gert_2.1.4 tidyselect_1.2.1 bit_4.5.0 lattice_0.22-6 rjson_0.2.23
[11] blob_1.2.4 urlchecker_1.0.1 S4Arrays_1.4.1 parallel_4.4.1 png_0.1-8
[16] tinytex_0.53 cli_3.6.3 ProtGenerics_1.36.0 askpass_1.2.1 sjstats_0.19.0
[21] goftest_1.2-3 openssl_2.2.2 textshaping_0.4.0 BiocIO_1.14.0 uwot_0.2.2
[26] curl_5.2.3 mime_0.12 evaluate_1.0.1 leiden_0.4.3.1 gsubfn_0.7
[31] stringi_1.8.4 backports_1.5.0 XML_3.99-0.17 httpuv_1.6.15 rappdirs_0.3.3
[36] splines_4.4.1 getopt_1.20.4 KMsurv_0.1-5 ggbeeswarm_0.7.2 sctransform_0.4.1
[41] sessioninfo_1.2.2 DBI_1.2.3 jquerylib_0.1.4 withr_3.0.1 class_7.3-22
[46] systemfonts_1.1.0 lmtest_0.9-40 rtracklayer_1.64.0 htmlwidgets_1.6.4 fs_1.6.4
[51] biomaRt_2.60.1 labeling_0.4.3 gh_1.4.1 SparseArray_1.4.8 ranger_0.16.0
[56] reticulate_1.39.0 XVector_0.44.0 UCSC.utils_1.0.0 timechange_0.3.0 fansi_1.0.6
[61] calibrate_1.7.7 RSpectra_0.16-2 irlba_2.3.5.1 ggrastr_1.0.2 commonmark_1.9.2
[66] fastDummies_1.7.4 ellipsis_0.3.2 lazyeval_0.2.2 yaml_2.3.10 scattermore_1.2
[71] crayon_1.5.3 RcppAnnoy_0.0.22 progressr_0.14.0 later_1.3.2 ggridges_0.5.6
[76] codetools_0.2-20 base64enc_0.1-3 profvis_0.4.0 KEGGREST_1.44.1 Rtsne_0.17
[81] limma_3.60.6 Rsamtools_2.20.0 filelock_1.0.3 rticles_0.27 foreign_0.8-87
[86] sqldf_0.4-11 pkgconfig_2.0.3 xml2_1.3.6 spatstat.univar_3.0-1 mathjaxr_1.6-0
[91] GenomicAlignments_1.40.0 spatstat.sparse_3.1-0 viridisLite_0.4.2 performance_0.12.3 xtable_1.8-4
[96] car_3.1-3 plyr_1.8.9 httr_1.4.7 globals_0.16.3 sys_3.4.3
[101] pkgbuild_1.4.4 beeswarm_0.4.0 htmlTable_2.4.3 broom_1.0.7 nlme_3.1-166
[106] dbplyr_2.5.0 survMisc_0.5.6 crosstalk_1.2.1 ggeffects_1.7.2 lme4_1.1-35.5
[111] digest_0.6.37 numDeriv_2016.8-1.1 Matrix_1.7-0 farver_2.1.2 tzdb_0.4.0
[116] rpart_4.1.23 glue_1.8.0 cachem_1.1.0 BiocFileCache_2.12.0 polyclip_1.10-7
[121] generics_0.1.3 Biostrings_2.72.1 visdat_0.6.0 CompQuadForm_1.4.3 presto_1.0.0
[126] proto_1.0.0 survey_4.4-2 parallelly_1.38.0 ggtext_0.1.2 statmod_1.5.0
[131] pkgload_1.4.0 arm_1.14-4 RcppHNSW_0.6.0 ragg_1.3.3 carData_3.0-5
[136] minqa_1.2.8 pbapply_1.7-2 httr2_1.0.5 spam_2.11-0 utf8_1.2.4
[141] mitools_2.4 sjmisc_2.8.10 datawizard_0.13.0 ggsignif_0.6.4 gridExtra_2.3
[146] shiny_1.9.1 GenomeInfoDbData_1.2.12 clisymbols_1.2.0 RCurl_1.98-1.16 memoise_2.0.1
[151] scales_1.3.0 future_1.34.0 RANN_2.6.2 renv_1.0.11 km.ci_0.5-6
[156] spatstat.data_3.1-2 rstudioapi_0.16.0 cluster_2.1.6 spatstat.utils_3.1-0 hms_1.1.3
[161] fitdistrplus_1.2-1 munsell_0.5.1 cowplot_1.1.3 colorspace_2.1-1 rlang_1.1.4
[166] quadprog_1.5-8 dotCall64_1.2 xfun_0.48 prereg_0.6.0 coda_0.19-4.1
[171] e1071_1.7-16 metafor_4.6-0 remotes_2.5.0 ggsci_3.2.0 bitops_1.0-9
[176] promises_1.3.0 RSQLite_2.3.7 DelayedArray_0.30.1 proxy_0.4-27 compiler_4.4.1
[181] prettyunits_1.2.0 boot_1.3-31 listenv_0.9.1 Rcpp_1.0.13 tensor_1.5
[186] progress_1.2.3 gridtext_0.1.5 BiocParallel_1.38.0 insight_0.20.5 spatstat.random_3.3-2
[191] R6_2.5.1 fastmap_1.2.0 rstatix_0.7.2 vipor_0.4.7 ROCR_1.0-11
[196] ggstats_0.7.0 vcd_1.4-13 nnet_7.3-19 gtable_0.3.5 KernSmooth_2.23-24
[201] miniUI_0.1.1.1 deldir_2.0-4 htmltools_0.5.8.1 bit64_4.5.2 spatstat.explore_3.3-2
[206] lifecycle_1.0.4 zip_2.3.1 nloptr_2.1.1 restfulr_0.0.15 sass_0.4.9
[211] vctrs_0.6.5 spatstat.geom_3.3-3 future.apply_1.11.2 bslib_0.8.0 pillar_1.9.0
[216] locfit_1.5-9.10 jsonlite_1.8.9 markdown_1.13 chron_2.3-61
rm(backup.scRNAseqData)
rm(scRNAseqData, scRNAseqDataCEA39)
save.image(paste0(PROJECT_loc, "/",Today,".",PROJECTNAME,".AESCRNA.results.RData"))| © 1979-2024 Sander W. van der Laan | s.w.vanderlaan[at]gmail[dot]com | vanderlaanand.science. |